$(document).ready(function() {
    
    verifyLogin();
    atualizaGrid();
    loadCategorias();

    $("#inputPesquisar").keyup(function(){       
        var index = $(this).parent().index();
        var nth = "#tableCursos td:nth-child("+(index+2).toString()+")";
        var valor = $(this).val().toUpperCase();
        $("#tableCursos tbody tr").show();
        $(nth).each(function(){
            if($(this).text().toUpperCase().indexOf(valor) < 0){
                $(this).parent().hide();
            }
        });
    });
 
    $("#inputPesquisar").blur(function(){
        $(this).val("");
    });
});

$("#btnNovoCurso").click(function() {
    $("#cadastroCursoModal").modal("show");
    $("#selectCategoria").val("0");
    $("#errorEmpty").hide();
    $("#errorServer").hide();
    $("#frmCursos")[0].reset();
    $("#inputIdCurso").val(0);
    
});

$("#btnNovaCategoria").click(function() {
    $("#cadastroCategoriasModal").modal("show");
    $("#formCategoria")[0].reset();
    $("#errorEmptyCategoria").hide();
    $("#errorServerCategoria").hide();
    // $('#salvar').attr('disabled', 'disabled'); TODO verificar
    $("#formCategoria input").map(function() {
        $(this).parents("div").removeClass("error");
    });
});
$('#salvarCategoria').click(function() {

    var valido = true;
    //remove o erro destacado em todos os inputs
    $("#form input").map(function() {
        $(this).parents("div").removeClass("error");
    });
    if ($('#inputCategoria').val().length === 0)
    {
        valido = false;
        $('#inputCategoria').parents("div").addClass("error");
    }

    if (valido)
    {
        travarFormularioCategoria();
        categoria = JSON.stringify({
            id: $("#inputIdCategoria").val(),
            nome: $("#inputCategoria").val()
        });
        $.ajax({
            type: "post",
            url: rootUrl + "categoria/save",
            dataType: "json",
            data: categoria,
            success: function(result) {
                destravarFormularioCategoria();
                $('#cadastroCategoriasModal').modal('hide');
                loadCategorias();
                atualizaGrid();
            },
            error: function(result) {
                destravarFormularioCategoria();
                $("#errorServerCategoria").html(getErrorMessage(result.responseText));
                $("#errorServerCategoria").show();
            }
        });
    }
    else
    {
        $("#errorEmptyCategoria").show();
        $("#errorServerCategoria").hide();
    }

});


$('#salvar').click(function() {

    var valido = true;
    if ($('#inputCurso').val().length === 0)
    {
        valido = false;
        $('#inputCurso').addClass('alert-danger');
    }
    else
        $('#inputCurso').removeClass('alert-danger');
    
    if ($('#inputValorCurso').val().length === 0)
    {
        valido = false;
        $('#inputValorCurso').addClass('alert-danger');
    }
    else
        $('#inputValorCurso').removeClass('alert-danger');
    
    if (!$('#selectCategoria').val())
    {
        valido = false;
        $('#selectCategoria').addClass('alert-danger');
    }
    else
         $('#selectCategoria').removeClass('alert-danger');

    if (valido)
    {
        travarFormulario();
        curso = JSON.stringify({
            id: $("#inputIdCurso").val(),
            nome: $("#inputCurso").val(),
            publicoAlvo: $("#inputPublicoAlvo").val(),
            valorCurso: $("#inputValorCurso").val(),
            cargaHoraria: $("#inputCargaHoraria").val(),
            objetivosCurso: $("#inputObjetivosCurso").val(),
            idCategoria: $("#selectCategoria").val()
        });
        $.ajax({
            type: "post",
            url: rootUrl + "cursos/save",
            dataType: "json",
            data: curso,
            success: function(result) {
                destravarFormulario();
                $('#cadastroCursoModal').modal('hide');
                $("form")[0].reset();
                atualizaGrid();
            },
            error: function(result) {
                destravarFormulario();
                $("#errorServer").html(getErrorMessage(result.responseText));
                $("#errorServer").show();
            }
        });
    }
    else
    {
        $("#errorEmpty").show();
        $("#errorServer").hide();
    }

});
function travarFormularioCategoria() {
    $("#errorEmptyCategoria").hide();
    $("form").hide();
    $("#saveMessageCategoria").show();
    $("#salvarCategoria").addClass("disabled");
    $("#clearForm").addClass("disabled");
}

function destravarFormularioCategoria() {
    $("#errorEmptyCategoria").hide();
    $("#errorServerCategoria").hide();
    $("form").show();
    $("#saveMessageCategoria").hide();
    $("#salvarCategoria").removeClass("disabled");
    $("#clearForm").removeClass("disabled");
}

function travarFormulario() {
    $("#errorEmpty").hide();
    $("form").hide();
    $("#saveMessage").show();
    $("#salvar").addClass("disabled");
    $("#clearForm").addClass("disabled");
}

function destravarFormulario() {
    $("#errorEmpty").hide();
    $("#errorServer").hide();
    $("form").show();
    $("#saveMessage").hide();
    $("#salvar").removeClass("disabled");
    $("#clearForm").removeClass("disabled");
}

$("#btnPesquisar").click(function() {
    atualizaGrid();

});

function atualizaGrid() {

    $("#tableCursos").find("tbody tr").remove();
    $("#tableCursos").find("tbody").append('<tr><td colspan=10><div class="alert alert-info"><img src="img/ajax-loader.gif"> Carregando...</div></td></tr>');

    $.ajax({
        type: "get",
        url: rootUrl + "cursos/listAll",
        dataType: "json",
        success: function(data) {
            $("#tableCursos").find("tbody tr").remove();
            data.result.forEach(function(curso) {
                row = "<tr>"
                        + "<td>" + curso.id
                        + "</td><td>" + curso.nome
                        + "</td><td>" + curso.cargaHoraria + " HS"
                        + "</td><td>" + "R$ " + moeda(curso.valorCurso)
                        + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + curso.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' id='delete' data-id='" + curso.id + "' data-nome='" + curso.nome + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                        + "</td></tr>";
                $("#tableCursos > tbody:last").append(row);
            });
        }
    });
}

function loadCategorias() {//TODO Verificar e implementar
    $("#loadCategoriasMessage").show();

    $.ajax({
        type: "get",
        dataType: "json",
        url: rootUrl + "categoria/listAll",
        success: function(data) {
            selectCategoria = $("#selectCategoria");
            selectCategoria.find('option').remove().end();
            $("#loadCategoriasMessage").hide();

            selectCategoria.append('<option value="">Selecione a categoria</option>');
            data.result.forEach(function(categoria) {

                //adiciona dados no dropdown de categorias
                selectCategoria.append('<option value="' + categoria.id + '">' + categoria.nome + '</option>');
            });

        },
        error: function(result) {
//            $("#errorLoad").html(getErrorMessage(result.responseText));
//            $("#errorLoad").show();
        }
    });

}

$("#edit").live("click", function() {

    id = $(this).attr("data-id");

    $("#errorServer").hide();
    $("#errorEmpty").hide();
    $("#errorServer").hide();
    $("#errorEmpty").hide();
    //Limpa marcação da caixa de texto
    $('#inputCurso').parents("div").removeClass("error");
    $('#inputValorCurso').parents("div").removeClass("error");
    //Limpa mensagem de campo requerido
    $("#errorEmpty").hide();
    $("form")[0].reset();
    
    $.ajax({
        type: "get",
        url: rootUrl + "cursos/list/" + id,
        dataType: "json",
        success: function(data) {

            curso = data.result;
            $("#inputIdCurso").val(curso.id);
            $("#inputCurso").val(curso.nome);
            $("#inputPublicoAlvo").val(curso.publicoAlvo);
            $("#inputValorCurso").val(curso.valorCurso);
            $("#inputCargaHoraria").val(curso.cargaHoraria);
            $("#inputObjetivosCurso").val(curso.objetivosCurso);
            $("#selectCategoria").val(curso.idCategoria);
            $("#inputValorCurso").maskMoney("mask");
            $("#cadastroCursoModal").modal("show");
        }
    });
});

$("#delete").live("click", function() {
    id = $(this).attr("data-id");
    nome = $(this).attr("data-nome");
    $('#lblCursoDelete').text(nome);

    $("#confirmDeleteModal").modal("show");
    $("#btnConfirmar").click(function() {
        
        $('#deleteMessage').show();
        $.ajax({
            type: "post",
            url: rootUrl + "cursos/delete",
            dataType: "json",
            data: JSON.stringify({id: id}),
            success: function() {
//                row.parent().parent().parent().fadeTo(400, 0, function() {
//                    row.parent().parent().parent().remove();
//                });
                $('#deleteMessage').hide();
                $("#confirmDeleteModal").modal("hide");
                atualizaGrid();
            },
            error: function() {
                //todo
            }
        });
    });

});